﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using Spring.Context;
using Spring.Context.Support;
using ProyectoGrupo5.Negocio;
using ProyectoGrupo5.ClasesDominio;

namespace ProyectoGrupo5.Pruebas
{
    [TestFixture]
    public class TestAvisoService
    {
        private IApplicationContext contexto = null;

        [TestFixtureSetUp]
        public void InicializarSpring()
        {
            this.contexto = new XmlApplicationContext(
                "assembly://ProyectoGrupo5/ProyectoGrupo5/capaNegocio.xml",
                "assembly://ProyectoGrupo5/ProyectoGrupo5/capaPersistencia.xml");
        }

        [Test]
        public void TestCrearAvisoCorrectamente()
        {
            AvisoService avisoService = (AvisoService)this.contexto.GetObject("candidatoService");
            Assert.NotNull(avisoService);
            Aviso nuevoAviso = new Aviso();
            Ofertante ofertante = new Ofertante();
            nuevoAviso.Ofertante = ofertante;
            nuevoAviso.CodigoAviso = 2;
            nuevoAviso.Titulo = "Administrador de Red";
            nuevoAviso.FechaInicio = Convert.ToDateTime("08/06/2011");
            nuevoAviso.DescripcionEmpresa = "Empresa dedicada al rubro textil";
            nuevoAviso.DescripcionPuesto = "Administrador de Red";
            nuevoAviso.Ofertante.CodigoOfertante = 3;
            nuevoAviso.FechaFin = Convert.ToDateTime("30/06/2011");
            try
            {
                nuevoAviso = avisoService.CrearAviso(nuevoAviso);
            }
            catch (Exception e)
            {
                Assert.Fail(string.Format("Excepción: {0}", e.Message));
            }
            Assert.NotNull(nuevoAviso);
            Assert.Greater(nuevoAviso.CodigoAviso, 0);
        }

        [Test]
        public void TestEliminarAviso()
        {
            AvisoService avisoService = (AvisoService)this.contexto.GetObject("avisoService");
            Assert.NotNull(avisoService);
            Aviso antiguoAviso = new Aviso();
            antiguoAviso.CodigoAviso = 2;
            
            try
            {
                avisoService.EliminarAviso(antiguoAviso.CodigoAviso);
            }
            catch (Exception e)
            {
                Assert.Fail(string.Format("Excepción: {0}", e.Message));
            }
            Assert.IsNull(antiguoAviso);
        }
    
    }
}